home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection 1998 Fall: Game Toolkit / Disc.iso / SDKs / QuickTime Mac / PInterfaces / ImageCodec.p < prev    next >
Encoding:
Text File  |  1998-04-09  |  42.4 KB  |  1,096 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        ImageCodec.p
  3.  
  4.      Contains:    QuickTime Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 3.0
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT ImageCodec;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __IMAGECODEC__}
  28. {$SETC __IMAGECODEC__ := 1}
  29.  
  30. {$I+}
  31. {$SETC ImageCodecIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QUICKDRAW__}
  38. {$I Quickdraw.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __IMAGECOMPRESSION__}
  41. {$I ImageCompression.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __COMPONENTS__}
  44. {$I Components.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __MOVIES__}
  47. {$I Movies.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __GXTYPES__}
  50. {$I GXTypes.p}
  51. {$ENDC}
  52.  
  53.  
  54. {$PUSH}
  55. {$ALIGN MAC68K}
  56. {$LibExport+}
  57.  
  58.  
  59. {    codec capabilities flags    }
  60.  
  61. CONST
  62.     codecCanScale                = $00000001;
  63.     codecCanMask                = $00000002;
  64.     codecCanMatte                = $00000004;
  65.     codecCanTransform            = $00000008;
  66.     codecCanTransferMode        = $00000010;
  67.     codecCanCopyPrev            = $00000020;
  68.     codecCanSpool                = $00000040;
  69.     codecCanClipVertical        = $00000080;
  70.     codecCanClipRectangular        = $00000100;
  71.     codecCanRemapColor            = $00000200;
  72.     codecCanFastDither            = $00000400;
  73.     codecCanSrcExtract            = $00000800;
  74.     codecCanCopyPrevComp        = $00001000;
  75.     codecCanAsync                = $00002000;
  76.     codecCanMakeMask            = $00004000;
  77.     codecCanShift                = $00008000;
  78.     codecCanAsyncWhen            = $00010000;
  79.     codecCanShieldCursor        = $00020000;
  80.     codecCanManagePrevBuffer    = $00040000;
  81.     codecHasVolatileBuffer        = $00080000;
  82.     codecWantsRegionMask        = $00100000;
  83.     codecImageBufferIsOnScreen    = $00200000;
  84.     codecWantsDestinationPixels    = $00400000;
  85.     codecWantsSpecialScaling    = $00800000;
  86.     codecHandlesInputs            = $01000000;
  87.     codecCanDoIndirectSurface    = $02000000;
  88.     codecIsSequenceSensitive    = $04000000;
  89.     codecRequiresOffscreen        = $08000000;
  90.     codecRequiresMaskBits        = $10000000;
  91.     codecCanRemapResolution        = $20000000;
  92.     codecIsDirectToScreenOnly    = $40000000;
  93.     codecCanLockSurface            = $80000000;
  94.  
  95.  
  96. TYPE
  97.     CodecCapabilitiesPtr = ^CodecCapabilities;
  98.     CodecCapabilities = RECORD
  99.         flags:                    LONGINT;
  100.         wantedPixelSize:        INTEGER;
  101.         extendWidth:            INTEGER;
  102.         extendHeight:            INTEGER;
  103.         bandMin:                INTEGER;
  104.         bandInc:                INTEGER;
  105.         pad:                    INTEGER;
  106.         time:                    UInt32;
  107.     END;
  108.  
  109. {    codec condition flags    }
  110.  
  111. CONST
  112.     codecConditionFirstBand        = $00000001;
  113.     codecConditionLastBand        = $00000002;
  114.     codecConditionFirstFrame    = $00000004;
  115.     codecConditionNewDepth        = $00000008;
  116.     codecConditionNewTransform    = $00000010;
  117.     codecConditionNewSrcRect    = $00000020;
  118.     codecConditionNewMask        = $00000040;
  119.     codecConditionNewMatte        = $00000080;
  120.     codecConditionNewTransferMode = $00000100;
  121.     codecConditionNewClut        = $00000200;
  122.     codecConditionNewAccuracy    = $00000400;
  123.     codecConditionNewDestination = $00000800;
  124.     codecConditionFirstScreen    = $00001000;
  125.     codecConditionDoCursor        = $00002000;
  126.     codecConditionCatchUpDiff    = $00004000;
  127.     codecConditionMaskMayBeChanged = $00008000;
  128.     codecConditionToBuffer        = $00010000;
  129.     codecConditionCodecChangedMask = $80000000;
  130.  
  131.  
  132.     codecInfoResourceType        = 'cdci';                        {  codec info resource type  }
  133.     codecInterfaceVersion        = 2;                            {  high word returned in component GetVersion  }
  134.  
  135.  
  136. TYPE
  137.     CDSequenceDataSourceQueueEntryPtr = ^CDSequenceDataSourceQueueEntry;
  138.     CDSequenceDataSourceQueueEntry = RECORD
  139.         nextBusy:                Ptr;
  140.         descSeed:                LONGINT;
  141.         dataDesc:                Handle;
  142.         data:                    Ptr;
  143.         dataSize:                LONGINT;
  144.         useCount:                LONGINT;
  145.         frameTime:                TimeValue;
  146.         frameDuration:            TimeValue;
  147.         timeScale:                TimeValue;
  148.     END;
  149.  
  150.     CDSequenceDataSourcePtr = ^CDSequenceDataSource;
  151.     CDSequenceDataSource = RECORD
  152.         recordSize:                LONGINT;
  153.         next:                    Ptr;
  154.         seqID:                    ImageSequence;
  155.         sourceID:                ImageSequenceDataSource;
  156.         sourceType:                OSType;
  157.         sourceInputNumber:        LONGINT;
  158.         dataPtr:                Ptr;
  159.         dataDescription:        Handle;
  160.         changeSeed:                LONGINT;
  161.         transferProc:            ICMConvertDataFormatUPP;
  162.         transferRefcon:            Ptr;
  163.         dataSize:                LONGINT;
  164.                                                                         {  fields available in QT 3 and later  }
  165.         dataQueue:                QHdrPtr;                                {  queue of CDSequenceDataSourceQueueEntry structures }
  166.         originalDataPtr:        Ptr;
  167.         originalDataSize:        LONGINT;
  168.         originalDataDescription: Handle;
  169.         originalDataDescriptionSeed: LONGINT;
  170.     END;
  171.  
  172.     ICMFrameTimeInfoPtr = ^ICMFrameTimeInfo;
  173.     ICMFrameTimeInfo = RECORD
  174.         startTime:                wide;
  175.         scale:                    LONGINT;
  176.         duration:                LONGINT;
  177.     END;
  178.  
  179.     CodecCompressParamsPtr = ^CodecCompressParams;
  180.     CodecCompressParams = RECORD
  181.         sequenceID:                ImageSequence;                            {  precompress,bandcompress  }
  182.         imageDescription:        ImageDescriptionHandle;                    {  precompress,bandcompress  }
  183.         data:                    Ptr;
  184.         bufferSize:                LONGINT;
  185.         frameNumber:            LONGINT;
  186.         startLine:                LONGINT;
  187.         stopLine:                LONGINT;
  188.         conditionFlags:            LONGINT;
  189.         callerFlags:            CodecFlags;
  190.         capabilities:            CodecCapabilitiesPtr;                    {  precompress,bandcompress  }
  191.         progressProcRecord:        ICMProgressProcRecord;
  192.         completionProcRecord:    ICMCompletionProcRecord;
  193.         flushProcRecord:        ICMFlushProcRecord;
  194.         srcPixMap:                PixMap;                                    {  precompress,bandcompress  }
  195.         prevPixMap:                PixMap;
  196.         spatialQuality:            CodecQ;
  197.         temporalQuality:        CodecQ;
  198.         similarity:                Fixed;
  199.         dataRateParams:            DataRateParamsPtr;
  200.         reserved:                LONGINT;
  201.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  202.         majorSourceChangeSeed:    UInt16;
  203.         minorSourceChangeSeed:    UInt16;
  204.         sourceData:                CDSequenceDataSourcePtr;
  205.                                                                         {  The following fields only exit for QuickTime 2.5 and greater  }
  206.         preferredPacketSizeInBytes: LONGINT;
  207.                                                                         {  The following fields only exit for QuickTime 3.0 and greater  }
  208.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  209.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  210.     END;
  211.  
  212.     CodecDecompressParamsPtr = ^CodecDecompressParams;
  213.     CodecDecompressParams = RECORD
  214.         sequenceID:                ImageSequence;                            {  predecompress,banddecompress  }
  215.         imageDescription:        ImageDescriptionHandle;                    {  predecompress,banddecompress  }
  216.         data:                    Ptr;
  217.         bufferSize:                LONGINT;
  218.         frameNumber:            LONGINT;
  219.         startLine:                LONGINT;
  220.         stopLine:                LONGINT;
  221.         conditionFlags:            LONGINT;
  222.         callerFlags:            CodecFlags;
  223.         capabilities:            CodecCapabilitiesPtr;                    {  predecompress,banddecompress  }
  224.         progressProcRecord:        ICMProgressProcRecord;
  225.         completionProcRecord:    ICMCompletionProcRecord;
  226.         dataProcRecord:            ICMDataProcRecord;
  227.         port:                    CGrafPtr;                                {  predecompress,banddecompress  }
  228.         dstPixMap:                PixMap;                                    {  predecompress,banddecompress  }
  229.         maskBits:                BitMapPtr;
  230.         mattePixMap:            PixMapPtr;
  231.         srcRect:                Rect;                                    {  predecompress,banddecompress  }
  232.         matrix:                    MatrixRecordPtr;                        {  predecompress,banddecompress  }
  233.         accuracy:                CodecQ;                                    {  predecompress,banddecompress  }
  234.         transferMode:            INTEGER;                                {  predecompress,banddecompress  }
  235.         frameTime:                ICMFrameTimePtr;                        {  banddecompress  }
  236.         reserved:                ARRAY [0..0] OF LONGINT;
  237.                                                                         {  The following fields only exist for QuickTime 2.0 and greater  }
  238.         matrixFlags:            SInt8;                                    {  high bit set if 2x resize  }
  239.         matrixType:                SInt8;
  240.         dstRect:                Rect;                                    {  only valid for simple transforms  }
  241.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  242.         majorSourceChangeSeed:    UInt16;
  243.         minorSourceChangeSeed:    UInt16;
  244.         sourceData:                CDSequenceDataSourcePtr;
  245.         maskRegion:                RgnHandle;
  246.                                                                         {  The following fields only exist for QuickTime 2.5 and greater  }
  247.         wantedDestinationPixelTypes: ^OSTypePtr;                        {  Handle to 0-terminated list of OSTypes  }
  248.         screenFloodMethod:        LONGINT;
  249.         screenFloodValue:        LONGINT;
  250.         preferredOffscreenPixelSize: INTEGER;
  251.                                                                         {  The following fields only exist for QuickTime 3.0 and greater  }
  252.         syncFrameTime:            ICMFrameTimeInfoPtr;                    {  banddecompress  }
  253.         needUpdateOnTimeChange:    BOOLEAN;                                {  banddecompress  }
  254.         enableBlackLining:        BOOLEAN;
  255.         needUpdateOnSourceChange: BOOLEAN;                                {  band decompress  }
  256.         pad:                    BOOLEAN;
  257.         unused:                    LONGINT;
  258.         finalDestinationPort:    CGrafPtr;
  259.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  260.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  261.     END;
  262.  
  263.  
  264. CONST
  265.     matrixFlagScale2x            = $00000080;
  266.     matrixFlagScale1x            = $00000040;
  267.     matrixFlagScaleHalf            = $00000020;
  268.  
  269.     kScreenFloodMethodNone        = 0;
  270.     kScreenFloodMethodKeyColor    = 1;
  271.     kScreenFloodMethodAlpha        = 2;
  272.  
  273.     kFlushLastQueuedFrame        = 0;
  274.     kFlushFirstQueuedFrame        = 1;
  275.  
  276.     kNewImageGWorldErase        = $00000001;
  277.  
  278.  
  279. TYPE
  280.     ImageSubCodecDecompressCapabilitiesPtr = ^ImageSubCodecDecompressCapabilities;
  281.     ImageSubCodecDecompressCapabilities = RECORD
  282.         recordSize:                LONGINT;                                {  sizeof(ImageSubCodecDecompressCapabilities) }
  283.         decompressRecordSize:    LONGINT;                                {  size of your codec's decompress record }
  284.         canAsync:                BOOLEAN;                                {  default true }
  285.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  286.     END;
  287.  
  288.  
  289. CONST
  290.     kCodecFrameTypeUnknown        = 0;
  291.     kCodecFrameTypeKey            = 1;
  292.     kCodecFrameTypeDifference    = 2;
  293.     kCodecFrameTypeDroppableDifference = 3;
  294.  
  295.  
  296. TYPE
  297.     ImageSubCodecDecompressRecordPtr = ^ImageSubCodecDecompressRecord;
  298.     ImageSubCodecDecompressRecord = RECORD
  299.         baseAddr:                Ptr;
  300.         rowBytes:                LONGINT;
  301.         codecData:                Ptr;
  302.         progressProcRecord:        ICMProgressProcRecord;
  303.         dataProcRecord:            ICMDataProcRecord;
  304.         userDecompressRecord:    Ptr;                                    {  pointer to codec-specific per-band data }
  305.         frameType:                SInt8;
  306.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  307.     END;
  308.  
  309. {  name of parameters or effect -- placed in root container, required  }
  310.  
  311. CONST
  312.     kParameterTitleName            = 'name';
  313.     kParameterTitleID            = 1;
  314.  
  315. {  codec sub-type of parameters or effect -- placed in root container, required  }
  316.     kParameterWhatName            = 'what';
  317.     kParameterWhatID            = 1;
  318.  
  319. {  effect version -- placed in root container, optional, but recommended  }
  320.     kParameterVersionName        = 'vers';
  321.     kParameterVersionID            = 1;
  322.  
  323. {  is effect repeatable -- placed in root container, optional, default is TRUE }
  324.     kParameterRepeatableName    = 'pete';
  325.     kParameterRepeatableID        = 1;
  326.  
  327.     kParameterRepeatableTrue    = 1;
  328.     kParameterRepeatableFalse    = 0;
  329.  
  330. {  substitution codec in case effect is missing -- placed in root container, recommended  }
  331.     kParameterAlternateCodecName = 'subs';
  332.     kParameterAlternateCodecID    = 1;
  333.  
  334. {  maximum number of sources -- placed in root container, required  }
  335.     kParameterSourceCountName    = 'srcs';
  336.     kParameterSourceCountID        = 1;
  337.  
  338.  
  339.     kParameterDependencyName    = 'deep';
  340.     kParameterDependencyID        = 1;
  341.  
  342.     kParameterListDependsUponColorProfiles = 'prof';
  343.     kParameterListDependsUponFonts = 'font';
  344.  
  345.  
  346. TYPE
  347.     ParameterDependancyRecordPtr = ^ParameterDependancyRecord;
  348.     ParameterDependancyRecord = RECORD
  349.         dependCount:            LONGINT;
  350.         depends:                ARRAY [0..0] OF OSType;
  351.     END;
  352.  
  353. {
  354.    enumeration list in container -- placed in root container, optional unless used by a
  355.    parameter in the list
  356. }
  357.  
  358. CONST
  359.     kParameterEnumList            = 'enum';
  360.  
  361.  
  362. TYPE
  363.     EnumValuePairPtr = ^EnumValuePair;
  364.     EnumValuePair = RECORD
  365.         value:                    LONGINT;
  366.         name:                    Str255;
  367.     END;
  368.  
  369.     EnumListRecordPtr = ^EnumListRecord;
  370.     EnumListRecord = RECORD
  371.         enumCount:                LONGINT;                                {  number of enumeration items to follow }
  372.         values:                    ARRAY [0..0] OF EnumValuePair;            {  values and names for them, packed  }
  373.     END;
  374.  
  375. {  atom type of parameter }
  376.  
  377. CONST
  378.     kParameterAtomTypeAndID        = 'type';
  379.  
  380.     kNoAtom                        = 'none';                        {  atom type for no data got/set }
  381.     kAtomNoFlags                = $00000000;
  382.     kAtomNotInterpolated        = $00000001;                    {  atom can never be interpolated }
  383.     kAtomInterpolateIsOptional    = $00000002;                    {  atom can be interpolated, but it is an advanced user operation }
  384.  
  385.  
  386. TYPE
  387.     ParameterAtomTypeAndIDPtr = ^ParameterAtomTypeAndID;
  388.     ParameterAtomTypeAndID = RECORD
  389.         atomType:                QTAtomType;                                {  type of atom this data comes from/goes into }
  390.         atomID:                    QTAtomID;                                {  ID of atom this data comes from/goes into }
  391.         atomFlags:                LONGINT;                                {  options for this atom }
  392.         atomName:                Str255;                                    {  name of this value type }
  393.     END;
  394.  
  395. {  data type of a parameter }
  396.  
  397. CONST
  398.     kParameterDataType            = 'data';
  399.  
  400.     kParameterTypeDataLong        = 2;                            {  integer value }
  401.     kParameterTypeDataFixed        = 3;                            {  fixed point value }
  402.     kParameterTypeDataRGBValue    = 8;                            {  RGBColor data }
  403.     kParameterTypeDataDouble    = 11;                            {  IEEE 64 bit floating point value }
  404.     kParameterTypeDataText        = 'text';                        {  editable text item }
  405.     kParameterTypeDataEnum        = 'enum';                        {  enumerated lookup value }
  406.     kParameterTypeDataBitField    = 'bool';                        {  bit field value (something that holds boolean(s)) }
  407.     kParameterTypeDataImage        = 'imag';                        {  reference to an image via Picture data }
  408.  
  409.  
  410. TYPE
  411.     ParameterDataTypePtr = ^ParameterDataType;
  412.     ParameterDataType = RECORD
  413.         dataType:                OSType;                                    {  type of data this item is stored as }
  414.     END;
  415.  
  416. {
  417.    alternate (optional) data type -- main data type always required.  
  418.    Must be modified or deleted when modifying main data type.
  419.    Main data type must be modified when alternate is modified.
  420. }
  421.  
  422. CONST
  423.     kParameterAlternateDataType    = 'alt1';
  424.     kParameterTypeDataColorValue = 'cmlr';                        {  CMColor data (supported on machines with ColorSync) }
  425.     kParameterTypeDataCubic        = 'cubi';                        {  cubic bezier(s) (no built-in support) }
  426.     kParameterTypeDataNURB        = 'nurb';                        {  nurb(s) (no built-in support) }
  427.  
  428.  
  429. TYPE
  430.     ParameterAlternateDataEntryPtr = ^ParameterAlternateDataEntry;
  431.     ParameterAlternateDataEntry = RECORD
  432.         dataType:                OSType;                                    {  type of data this item is stored as }
  433.         alternateAtom:            QTAtomType;                                {  where to store }
  434.     END;
  435.  
  436.     ParameterAlternateDataTypePtr = ^ParameterAlternateDataType;
  437.     ParameterAlternateDataType = RECORD
  438.         numEntries:                LONGINT;
  439.         entries:                ARRAY [0..0] OF ParameterAlternateDataEntry;
  440.     END;
  441.  
  442. {  legal values for the parameter }
  443.  
  444. CONST
  445.     kParameterDataRange            = 'rang';
  446.  
  447.     kNoMinimumLongFixed            = $7FFFFFFF;                    {  ignore minimum/maxiumum values }
  448.     kNoMaximumLongFixed            = $80000000;
  449.     kNoScaleLongFixed            = 0;                            {  don't perform any scaling of value }
  450.     kNoPrecision                = -1;                            {  allow as many digits as format }
  451.  
  452. {  'text' }
  453.  
  454. TYPE
  455.     StringRangeRecordPtr = ^StringRangeRecord;
  456.     StringRangeRecord = RECORD
  457.         maxChars:                LONGINT;                                {  maximum length of string }
  458.         maxLines:                LONGINT;                                {  number of editing lines to use (1 typical, 0 to default) }
  459.     END;
  460.  
  461. {  'long' }
  462.     LongRangeRecordPtr = ^LongRangeRecord;
  463.     LongRangeRecord = RECORD
  464.         minValue:                LONGINT;                                {  no less than this }
  465.         maxValue:                LONGINT;                                {  no more than this }
  466.         scaleValue:                LONGINT;                                {  muliply content by this going in, divide going out }
  467.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  468.     END;
  469.  
  470. {  'enum' }
  471.     EnumRangeRecordPtr = ^EnumRangeRecord;
  472.     EnumRangeRecord = RECORD
  473.         enumID:                    LONGINT;                                {  'enum' list in root container to search within }
  474.     END;
  475.  
  476. {  'fixd' }
  477.     FixedRangeRecordPtr = ^FixedRangeRecord;
  478.     FixedRangeRecord = RECORD
  479.         minValue:                Fixed;                                    {  no less than this }
  480.         maxValue:                Fixed;                                    {  no more than this }
  481.         scaleValue:                Fixed;                                    {  muliply content by this going in, divide going out }
  482.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  483.     END;
  484.  
  485. {  'doub' }
  486. {  'bool'     }
  487.     BooleanRangeRecordPtr = ^BooleanRangeRecord;
  488.     BooleanRangeRecord = RECORD
  489.         maskValue:                LONGINT;                                {  value to mask on/off to set/clear the boolean }
  490.     END;
  491.  
  492. {  'rgb ' }
  493.     RGBRangeRecordPtr = ^RGBRangeRecord;
  494.     RGBRangeRecord = RECORD
  495.         minColor:                RGBColor;
  496.         maxColor:                RGBColor;
  497.     END;
  498.  
  499. {  'imag' }
  500.  
  501. CONST
  502.     kParameterImageNoFlags        = 0;
  503.  
  504.  
  505. TYPE
  506.     ImageRangeRecordPtr = ^ImageRangeRecord;
  507.     ImageRangeRecord = RECORD
  508.         imageFlags:                LONGINT;
  509.     END;
  510.  
  511. {  union of all of the above }
  512. {  UI behavior of a parameter }
  513.  
  514. CONST
  515.     kParameterDataBehavior        = 'ditl';
  516.  
  517.                                                                 {  items edited via typing }
  518.     kParameterItemEditText        = 'edit';                        {  edit text box }
  519.     kParameterItemEditLong        = 'long';                        {  long number editing box }
  520.     kParameterItemEditFixed        = 'fixd';                        {  fixed point number editing box }
  521.     kParameterItemEditDouble    = 'doub';                        {  double number editing box }
  522.                                                                 {  items edited via control(s) }
  523.     kParameterItemPopUp            = 'popu';                        {  pop up value for enum types }
  524.     kParameterItemRadioCluster    = 'radi';                        {  radio cluster for enum types }
  525.     kParameterItemCheckBox        = 'chex';                        {  check box for booleans }
  526.     kParameterItemControl        = 'cntl';                        {  item controlled via a standard control of some type }
  527.                                                                 {  special user items }
  528.     kParameterItemLine            = 'line';                        {  line }
  529.     kParameterItemColorPicker    = 'pick';                        {  color swatch & picker }
  530.     kParameterItemGroupDivider    = 'divi';                        {  start of a new group of items }
  531.     kParameterItemStaticText    = 'stat';                        {  display "parameter name" as static text }
  532.     kParameterItemDragImage        = 'imag';                        {  allow image display, along with drag and drop }
  533.                                                                 {  flags valid for lines and groups }
  534.     kGraphicsNoFlags            = $00000000;                    {  no options for graphics }
  535.     kGraphicsFlagsGray            = $00000001;                    {  draw lines with gray }
  536.                                                                 {  flags valid for groups }
  537.     kGroupNoFlags                = $00000000;                    {  no options for group -- may be combined with graphics options                         }
  538.     kGroupAlignText                = $00010000;                    {  edit text items in group have the same size }
  539.     kGroupSurroundBox            = $00020000;                    {  group should be surrounded with a box }
  540.     kGroupMatrix                = $00040000;                    {  side-by-side arrangement of group is okay }
  541.     kGroupNoName                = $00080000;                    {  name of group should not be displayed above box }
  542.                                                                 {  flags valid for popup/radiocluster/checkbox/control }
  543.     kDisableControl                = $00000001;
  544.     kDisableWhenNotEqual        = $00000001;
  545.     kDisableWhenEqual            = $00000011;
  546.     kDisableWhenLessThan        = $00000021;
  547.     kDisableWhenGreaterThan        = $00000031;                    {  flags valid for popups }
  548.     kPopupStoreAsString            = $00010000;
  549.  
  550.  
  551. TYPE
  552.     ControlBehaviorsPtr = ^ControlBehaviors;
  553.     ControlBehaviors = RECORD
  554.         groupID:                QTAtomID;                                {  group under control of this item }
  555.         controlValue:            LONGINT;                                {  control value for comparison purposes }
  556.     END;
  557.  
  558.     ParameterDataBehaviorPtr = ^ParameterDataBehavior;
  559.     ParameterDataBehavior = RECORD
  560.         behaviorType:            OSType;
  561.         behaviorFlags:            LONGINT;
  562.         CASE INTEGER OF
  563.         0: (
  564.             controls:            ControlBehaviors;
  565.             );
  566.     END;
  567.  
  568. {  higher level purpose of a parameter or set of parameters }
  569.  
  570. CONST
  571.     kParameterDataUsage            = 'use ';
  572.  
  573.     kParameterUsagePixels        = 'pixl';
  574.     kParameterUsageRectangle    = 'rect';
  575.     kParameterUsagePoint        = 'xy  ';
  576.     kParameterUsage3DPoint        = 'xyz ';
  577.     kParameterUsageDegrees        = 'degr';
  578.     kParameterUsageRadians        = 'rads';
  579.     kParameterUsagePercent        = 'pcnt';
  580.     kParameterUsageSeconds        = 'secs';
  581.     kParameterUsageMilliseconds    = 'msec';
  582.     kParameterUsageMicroseconds    = 'µsec';
  583.     kParameterUsage3by3Matrix    = '3by3';
  584.  
  585.  
  586. TYPE
  587.     ParameterDataUsagePtr = ^ParameterDataUsage;
  588.     ParameterDataUsage = RECORD
  589.         usageType:                OSType;                                    {  higher level purpose of the data or group }
  590.     END;
  591.  
  592. {  default value(s) for a parameter }
  593.  
  594. CONST
  595.     kParameterDataDefaultItem    = 'dflt';
  596.  
  597. { atoms that help to fill in data within the info window }
  598.     kParameterInfoLongName        = '©nam';
  599.     kParameterInfoCopyright        = '©cpy';
  600.     kParameterInfoDescription    = '©inf';
  601.     kParameterInfoWindowTitle    = '©wnt';
  602.     kParameterInfoPicture        = '©pix';
  603.     kParameterInfoManufacturer    = '©man';
  604.     kParameterInfoIDs            = 1;
  605.  
  606. { flags for ImageCodecValidateParameters }
  607.     kParameterValidationNoFlags    = $00000000;
  608.     kParameterValidationFinalValidation = $00000001;
  609.  
  610.  
  611. TYPE
  612.     QTParameterValidationOptions        = LONGINT;
  613. {  QTAtomTypes for atoms in image compressor settings containers }
  614.  
  615. CONST
  616.     kImageCodecSettingsFieldCount = 'fiel';                        {  Number of fields (UInt8)  }
  617.     kImageCodecSettingsFieldOrdering = 'fdom';                    {  Ordering of fields (UInt8) }
  618.     kImageCodecSettingsFieldOrderingF1F2 = 1;
  619.     kImageCodecSettingsFieldOrderingF2F1 = 2;
  620.  
  621.  
  622. TYPE
  623. {$IFC TYPED_FUNCTION_POINTERS}
  624.     ImageCodecMPDrawBandProcPtr = FUNCTION(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  625. {$ELSEC}
  626.     ImageCodecMPDrawBandProcPtr = ProcPtr;
  627. {$ENDC}
  628.  
  629.     ImageCodecMPDrawBandUPP = UniversalProcPtr;
  630.  
  631. CONST
  632.     uppImageCodecMPDrawBandProcInfo = $000003F0;
  633.  
  634. FUNCTION NewImageCodecMPDrawBandProc(userRoutine: ImageCodecMPDrawBandProcPtr): ImageCodecMPDrawBandUPP;
  635.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  636.     INLINE $2E9F;
  637.     {$ENDC}
  638.  
  639. FUNCTION CallImageCodecMPDrawBandProc(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord; userRoutine: ImageCodecMPDrawBandUPP): ComponentResult;
  640.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  641.     INLINE $205F, $4E90;
  642.     {$ENDC}
  643. {    codec selectors 0-127 are reserved by Apple }
  644. {    codec selectors 128-191 are subtype specific }
  645. {    codec selectors 192-255 are vendor specific }
  646. {    codec selectors 256-32767 are available for general use }
  647. {    negative selectors are reserved by the Component Manager }
  648. FUNCTION ImageCodecGetCodecInfo(ci: ComponentInstance; VAR info: CodecInfo): ComponentResult;
  649.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  650.     INLINE $2F3C, $0004, $0000, $7000, $A82A;
  651.     {$ENDC}
  652. FUNCTION ImageCodecGetCompressionTime(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; VAR spatialQuality: CodecQ; VAR temporalQuality: CodecQ; VAR time: UInt32): ComponentResult;
  653.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  654.     INLINE $2F3C, $0016, $0001, $7000, $A82A;
  655.     {$ENDC}
  656. FUNCTION ImageCodecGetMaxCompressionSize(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; VAR size: LONGINT): ComponentResult;
  657.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  658.     INLINE $2F3C, $0012, $0002, $7000, $A82A;
  659.     {$ENDC}
  660. FUNCTION ImageCodecPreCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  661.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  662.     INLINE $2F3C, $0004, $0003, $7000, $A82A;
  663.     {$ENDC}
  664. FUNCTION ImageCodecBandCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  665.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  666.     INLINE $2F3C, $0004, $0004, $7000, $A82A;
  667.     {$ENDC}
  668. FUNCTION ImageCodecPreDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  669.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  670.     INLINE $2F3C, $0004, $0005, $7000, $A82A;
  671.     {$ENDC}
  672. FUNCTION ImageCodecBandDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  673.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  674.     INLINE $2F3C, $0004, $0006, $7000, $A82A;
  675.     {$ENDC}
  676. FUNCTION ImageCodecBusy(ci: ComponentInstance; seq: ImageSequence): ComponentResult;
  677.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  678.     INLINE $2F3C, $0004, $0007, $7000, $A82A;
  679.     {$ENDC}
  680. FUNCTION ImageCodecGetCompressedImageSize(ci: ComponentInstance; desc: ImageDescriptionHandle; data: Ptr; bufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; VAR dataSize: LONGINT): ComponentResult;
  681.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  682.     INLINE $2F3C, $0014, $0008, $7000, $A82A;
  683.     {$ENDC}
  684. FUNCTION ImageCodecGetSimilarity(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; desc: ImageDescriptionHandle; data: Ptr; VAR similarity: Fixed): ComponentResult;
  685.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  686.     INLINE $2F3C, $0014, $0009, $7000, $A82A;
  687.     {$ENDC}
  688. FUNCTION ImageCodecTrimImage(ci: ComponentInstance; Desc: ImageDescriptionHandle; inData: Ptr; inBufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; outData: Ptr; outBufferSize: LONGINT; flushProc: ICMFlushProcRecordPtr; VAR trimRect: Rect; progressProc: ICMProgressProcRecordPtr): ComponentResult;
  689.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  690.     INLINE $2F3C, $0024, $000A, $7000, $A82A;
  691.     {$ENDC}
  692. FUNCTION ImageCodecRequestSettings(ci: ComponentInstance; settings: Handle; VAR rp: Rect; filterProc: ModalFilterUPP): ComponentResult;
  693.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  694.     INLINE $2F3C, $000C, $000B, $7000, $A82A;
  695.     {$ENDC}
  696. FUNCTION ImageCodecGetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  697.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  698.     INLINE $2F3C, $0004, $000C, $7000, $A82A;
  699.     {$ENDC}
  700. FUNCTION ImageCodecSetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  701.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  702.     INLINE $2F3C, $0004, $000D, $7000, $A82A;
  703.     {$ENDC}
  704. FUNCTION ImageCodecFlush(ci: ComponentInstance): ComponentResult;
  705.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  706.     INLINE $2F3C, $0000, $000E, $7000, $A82A;
  707.     {$ENDC}
  708. FUNCTION ImageCodecSetTimeCode(ci: ComponentInstance; timeCodeFormat: UNIV Ptr; timeCodeTime: UNIV Ptr): ComponentResult;
  709.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  710.     INLINE $2F3C, $0008, $000F, $7000, $A82A;
  711.     {$ENDC}
  712. FUNCTION ImageCodecIsImageDescriptionEquivalent(ci: ComponentInstance; newDesc: ImageDescriptionHandle; VAR equivalent: BOOLEAN): ComponentResult;
  713.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  714.     INLINE $2F3C, $0008, $0010, $7000, $A82A;
  715.     {$ENDC}
  716. FUNCTION ImageCodecNewMemory(ci: ComponentInstance; VAR data: Ptr; dataSize: Size; dataUse: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  717.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  718.     INLINE $2F3C, $0014, $0011, $7000, $A82A;
  719.     {$ENDC}
  720. FUNCTION ImageCodecDisposeMemory(ci: ComponentInstance; data: Ptr): ComponentResult;
  721.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  722.     INLINE $2F3C, $0004, $0012, $7000, $A82A;
  723.     {$ENDC}
  724. FUNCTION ImageCodecHitTestData(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: BOOLEAN): ComponentResult;
  725.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  726.     INLINE $2F3C, $0014, $0013, $7000, $A82A;
  727.     {$ENDC}
  728. FUNCTION ImageCodecNewImageBufferMemory(ci: ComponentInstance; VAR params: CodecDecompressParams; flags: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  729.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  730.     INLINE $2F3C, $0010, $0014, $7000, $A82A;
  731.     {$ENDC}
  732. FUNCTION ImageCodecExtractAndCombineFields(ci: ComponentInstance; fieldFlags: LONGINT; data1: UNIV Ptr; dataSize1: LONGINT; desc1: ImageDescriptionHandle; data2: UNIV Ptr; dataSize2: LONGINT; desc2: ImageDescriptionHandle; outputData: UNIV Ptr; VAR outDataSize: LONGINT; descOut: ImageDescriptionHandle): ComponentResult;
  733.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  734.     INLINE $2F3C, $0028, $0015, $7000, $A82A;
  735.     {$ENDC}
  736. FUNCTION ImageCodecGetMaxCompressionSizeWithSources(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; sourceData: CDSequenceDataSourcePtr; VAR size: LONGINT): ComponentResult;
  737.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  738.     INLINE $2F3C, $0016, $0016, $7000, $A82A;
  739.     {$ENDC}
  740. FUNCTION ImageCodecSetTimeBase(ci: ComponentInstance; base: UNIV Ptr): ComponentResult;
  741.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  742.     INLINE $2F3C, $0004, $0017, $7000, $A82A;
  743.     {$ENDC}
  744. FUNCTION ImageCodecSourceChanged(ci: ComponentInstance; majorSourceChangeSeed: UInt32; minorSourceChangeSeed: UInt32; sourceData: CDSequenceDataSourcePtr; VAR flagsOut: LONGINT): ComponentResult;
  745.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  746.     INLINE $2F3C, $0010, $0018, $7000, $A82A;
  747.     {$ENDC}
  748. FUNCTION ImageCodecFlushFrame(ci: ComponentInstance; flags: UInt32): ComponentResult;
  749.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  750.     INLINE $2F3C, $0004, $0019, $7000, $A82A;
  751.     {$ENDC}
  752. FUNCTION ImageCodecGetSettingsAsText(ci: ComponentInstance; VAR text: Handle): ComponentResult;
  753.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  754.     INLINE $2F3C, $0004, $001A, $7000, $A82A;
  755.     {$ENDC}
  756. FUNCTION ImageCodecGetParameterListHandle(ci: ComponentInstance; VAR parameterDescriptionHandle: Handle): ComponentResult;
  757.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  758.     INLINE $2F3C, $0004, $001B, $7000, $A82A;
  759.     {$ENDC}
  760. FUNCTION ImageCodecGetParameterList(ci: ComponentInstance; VAR parameterDescription: QTAtomContainer): ComponentResult;
  761.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  762.     INLINE $2F3C, $0004, $001C, $7000, $A82A;
  763.     {$ENDC}
  764. FUNCTION ImageCodecCreateStandardParameterDialog(ci: ComponentInstance; parameterDescription: QTAtomContainer; parameters: QTAtomContainer; dialogOptions: QTParameterDialogOptions; existingDialog: DialogPtr; existingUserItem: INTEGER; VAR createdDialog: QTParameterDialog): ComponentResult;
  765.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  766.     INLINE $2F3C, $0016, $001D, $7000, $A82A;
  767.     {$ENDC}
  768. FUNCTION ImageCodecIsStandardParameterDialogEvent(ci: ComponentInstance; VAR pEvent: EventRecord; createdDialog: QTParameterDialog): ComponentResult;
  769.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  770.     INLINE $2F3C, $0008, $001E, $7000, $A82A;
  771.     {$ENDC}
  772. FUNCTION ImageCodecDismissStandardParameterDialog(ci: ComponentInstance; createdDialog: QTParameterDialog): ComponentResult;
  773.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  774.     INLINE $2F3C, $0004, $001F, $7000, $A82A;
  775.     {$ENDC}
  776. FUNCTION ImageCodecStandardParameterDialogDoAction(ci: ComponentInstance; createdDialog: QTParameterDialog; action: LONGINT; params: UNIV Ptr): ComponentResult;
  777.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  778.     INLINE $2F3C, $000C, $0020, $7000, $A82A;
  779.     {$ENDC}
  780. FUNCTION ImageCodecNewImageGWorld(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR newGW: GWorldPtr; flags: LONGINT): ComponentResult;
  781.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  782.     INLINE $2F3C, $000C, $0021, $7000, $A82A;
  783.     {$ENDC}
  784. FUNCTION ImageCodecDisposeImageGWorld(ci: ComponentInstance; theGW: GWorldPtr): ComponentResult;
  785.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  786.     INLINE $2F3C, $0004, $0022, $7000, $A82A;
  787.     {$ENDC}
  788. FUNCTION ImageCodecHitTestDataWithFlags(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: LONGINT; hitFlags: LONGINT): ComponentResult;
  789.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  790.     INLINE $2F3C, $0018, $0023, $7000, $A82A;
  791.     {$ENDC}
  792. FUNCTION ImageCodecValidateParameters(ci: ComponentInstance; parameters: QTAtomContainer; validationFlags: QTParameterValidationOptions; errorString: StringPtr): ComponentResult;
  793.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  794.     INLINE $2F3C, $000C, $0024, $7000, $A82A;
  795.     {$ENDC}
  796. FUNCTION ImageCodecGetBaseMPWorkFunction(ci: ComponentInstance; VAR workFunction: ComponentMPWorkFunctionUPP; VAR refCon: UNIV Ptr; drawProc: ImageCodecMPDrawBandUPP; drawProcRefCon: UNIV Ptr): ComponentResult;
  797.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  798.     INLINE $2F3C, $0010, $0025, $7000, $A82A;
  799.     {$ENDC}
  800. FUNCTION ImageCodecPreflight(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  801.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  802.     INLINE $2F3C, $0004, $0200, $7000, $A82A;
  803.     {$ENDC}
  804. FUNCTION ImageCodecInitialize(ci: ComponentInstance; VAR cap: ImageSubCodecDecompressCapabilities): ComponentResult;
  805.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  806.     INLINE $2F3C, $0004, $0201, $7000, $A82A;
  807.     {$ENDC}
  808. FUNCTION ImageCodecBeginBand(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR drp: ImageSubCodecDecompressRecord; flags: LONGINT): ComponentResult;
  809.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  810.     INLINE $2F3C, $000C, $0202, $7000, $A82A;
  811.     {$ENDC}
  812. FUNCTION ImageCodecDrawBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  813.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  814.     INLINE $2F3C, $0004, $0203, $7000, $A82A;
  815.     {$ENDC}
  816. FUNCTION ImageCodecEndBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord; result: OSErr; flags: LONGINT): ComponentResult;
  817.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  818.     INLINE $2F3C, $000A, $0204, $7000, $A82A;
  819.     {$ENDC}
  820. FUNCTION ImageCodecQueueStarting(ci: ComponentInstance): ComponentResult;
  821.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  822.     INLINE $2F3C, $0000, $0205, $7000, $A82A;
  823.     {$ENDC}
  824. FUNCTION ImageCodecQueueStopping(ci: ComponentInstance): ComponentResult;
  825.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  826.     INLINE $2F3C, $0000, $0206, $7000, $A82A;
  827.     {$ENDC}
  828. FUNCTION ImageCodecDroppingFrame(ci: ComponentInstance; {CONST}VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  829.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  830.     INLINE $2F3C, $0004, $0207, $7000, $A82A;
  831.     {$ENDC}
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844. CONST
  845.     kMotionJPEGTag                = 'mjpg';
  846.     kJPEGQuantizationTablesImageDescriptionExtension = 'mjqt';
  847.     kJPEGHuffmanTablesImageDescriptionExtension = 'mjht';
  848.     kFieldInfoImageDescriptionExtension = 'fiel';                {  image description extension describing the field count and field orderings }
  849.  
  850.     kFieldOrderUnknown            = 0;
  851.     kFieldsStoredF1F2DisplayedF1F2 = 1;
  852.     kFieldsStoredF1F2DisplayedF2F1 = 2;
  853.     kFieldsStoredF2F1DisplayedF1F2 = 5;
  854.     kFieldsStoredF2F1DisplayedF2F1 = 6;
  855.  
  856.  
  857. TYPE
  858.     MotionJPEGApp1MarkerPtr = ^MotionJPEGApp1Marker;
  859.     MotionJPEGApp1Marker = RECORD
  860.         unused:                    LONGINT;
  861.         tag:                    LONGINT;
  862.         fieldSize:                LONGINT;
  863.         paddedFieldSize:        LONGINT;
  864.         offsetToNextField:        LONGINT;
  865.         qTableOffset:            LONGINT;
  866.         huffmanTableOffset:        LONGINT;
  867.         sofOffset:                LONGINT;
  868.         sosOffset:                LONGINT;
  869.         soiOffset:                LONGINT;
  870.     END;
  871.  
  872.     FieldInfoImageDescriptionExtensionPtr = ^FieldInfoImageDescriptionExtension;
  873.     FieldInfoImageDescriptionExtension = PACKED RECORD
  874.         fieldCount:                UInt8;
  875.         fieldOrderings:            UInt8;
  876.     END;
  877.  
  878.  
  879. FUNCTION QTPhotoSetSampling(codec: ComponentInstance; yH: INTEGER; yV: INTEGER; cbH: INTEGER; cbV: INTEGER; crH: INTEGER; crV: INTEGER): ComponentResult;
  880.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  881.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  882.     {$ENDC}
  883. FUNCTION QTPhotoSetRestartInterval(codec: ComponentInstance; restartInterval: UInt16): ComponentResult;
  884.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  885.     INLINE $2F3C, $0002, $0101, $7000, $A82A;
  886.     {$ENDC}
  887. FUNCTION QTPhotoDefineHuffmanTable(codec: ComponentInstance; componentNumber: INTEGER; isDC: BOOLEAN; VAR lengthCounts: UInt8; VAR values: UInt8): ComponentResult;
  888.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  889.     INLINE $2F3C, $000C, $0102, $7000, $A82A;
  890.     {$ENDC}
  891. FUNCTION QTPhotoDefineQuantizationTable(codec: ComponentInstance; componentNumber: INTEGER; VAR table: UInt8): ComponentResult;
  892.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  893.     INLINE $2F3C, $0006, $0103, $7000, $A82A;
  894.     {$ENDC}
  895.  
  896.  
  897.  
  898.  
  899. { source identifier -- placed in root container of description, one or more required }
  900.  
  901. CONST
  902.     kEffectSourceName            = 'src ';
  903.  
  904.  
  905. { source type -- placed in the input map to identify the source kind }
  906.     kEffectDataSourceType        = 'dtst';
  907.  
  908. {  default effect types }
  909.     kEffectRawSource            = 0;                            {  the source is raw image data }
  910.     kEffectGenericType            = 'geff';                        {  generic effect for combining others }
  911.  
  912.  
  913. TYPE
  914.     EffectSourcePtr = ^EffectSource;
  915.     SourceDataPtr = ^SourceData;
  916.     SourceData = RECORD
  917.         CASE INTEGER OF
  918.         0: (
  919.             image:                CDSequenceDataSourcePtr;
  920.             );
  921.         1: (
  922.             effect:                EffectSourcePtr;
  923.             );
  924.     END;
  925.  
  926.  
  927.     EffectSource = RECORD
  928.         effectType:                LONGINT;                                {  type of effect or kEffectRawSource if raw ICM data }
  929.         data:                    Ptr;                                    {  track data for this effect }
  930.         source:                    SourceData;                                {  source/effect pointers }
  931.         next:                    EffectSourcePtr;                        {  the next source for the parent effect }
  932.     END;
  933.  
  934.     EffectsFrameParamsPtr = ^EffectsFrameParams;
  935.     EffectsFrameParams = RECORD
  936.         frameTime:                ICMFrameTimeRecord;                        {  timing data }
  937.         effectDuration:            LONGINT;                                {  the duration of a single effect frame }
  938.         doAsync:                BOOLEAN;                                {  set to true if the effect can go async }
  939.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  940.         source:                    EffectSourcePtr;                        {  ptr to the source input tree }
  941.         refCon:                    Ptr;                                    {  storage for the effect }
  942.     END;
  943.  
  944.  
  945.  
  946. FUNCTION ImageCodecEffectSetup(effect: ComponentInstance; VAR p: CodecDecompressParams): ComponentResult;
  947.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  948.     INLINE $2F3C, $0004, $0300, $7000, $A82A;
  949.     {$ENDC}
  950. FUNCTION ImageCodecEffectBegin(effect: ComponentInstance; VAR p: CodecDecompressParams; ePtr: EffectsFrameParamsPtr): ComponentResult;
  951.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  952.     INLINE $2F3C, $0008, $0301, $7000, $A82A;
  953.     {$ENDC}
  954. FUNCTION ImageCodecEffectRenderFrame(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  955.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  956.     INLINE $2F3C, $0004, $0302, $7000, $A82A;
  957.     {$ENDC}
  958. FUNCTION ImageCodecEffectConvertEffectSourceToFormat(effect: ComponentInstance; sourceToConvert: EffectSourcePtr; requestedDesc: ImageDescriptionHandle): ComponentResult;
  959.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  960.     INLINE $2F3C, $0008, $0303, $7000, $A82A;
  961.     {$ENDC}
  962. FUNCTION ImageCodecEffectCancel(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  963.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  964.     INLINE $2F3C, $0004, $0304, $7000, $A82A;
  965.     {$ENDC}
  966. FUNCTION ImageCodecEffectGetSpeed(effect: ComponentInstance; parameters: QTAtomContainer; VAR pFPS: Fixed): ComponentResult;
  967.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  968.     INLINE $2F3C, $0008, $0305, $7000, $A82A;
  969.     {$ENDC}
  970.  
  971.  
  972.  
  973. { curve atom types and data structures }
  974.  
  975. CONST
  976.     kCurvePathAtom                = 'path';
  977.     kCurveEndAtom                = 'zero';
  978.     kCurveAntialiasControlAtom    = 'anti';
  979.     kCurveAntialiasOff            = 0;
  980.     kCurveAntialiasOn            = $FFFFFFFF;
  981.     kCurveFillTypeAtom            = 'fill';
  982.     kCurvePenThicknessAtom        = 'pent';
  983.     kCurveMiterLimitAtom        = 'mitr';
  984.     kCurveJoinAttributesAtom    = 'join';
  985.     kCurveMinimumDepthAtom        = 'mind';
  986.     kCurveDepthAlwaysOffscreenMask = $80000000;
  987.     kCurveTransferModeAtom        = 'xfer';
  988.     kCurveGradientAngleAtom        = 'angl';
  989.     kCurveGradientRadiusAtom    = 'radi';
  990.     kCurveGradientOffsetAtom    = 'cent';
  991.  
  992.     kCurveARGBColorAtom            = 'argb';
  993.  
  994.  
  995. TYPE
  996.     ARGBColorPtr = ^ARGBColor;
  997.     ARGBColor = RECORD
  998.         alpha:                    UInt16;
  999.         red:                    UInt16;
  1000.         green:                    UInt16;
  1001.         blue:                    UInt16;
  1002.     END;
  1003.  
  1004.  
  1005. CONST
  1006.     kCurveGradientRecordAtom    = 'grad';
  1007.  
  1008.  
  1009. TYPE
  1010.     GradientColorRecordPtr = ^GradientColorRecord;
  1011.     GradientColorRecord = RECORD
  1012.         thisColor:                ARGBColor;
  1013.         endingPercentage:        Fixed;
  1014.     END;
  1015.  
  1016.     GradientColorPtr                    = ^GradientColorRecord;
  1017.  
  1018. CONST
  1019.     kCurveGradientTypeAtom        = 'grdt';
  1020.  
  1021. { currently supported gradient types }
  1022.     kLinearGradient                = 0;
  1023.     kCircularGradient            = 1;
  1024.  
  1025.  
  1026. TYPE
  1027.     GradientType                        = LONGINT;
  1028. FUNCTION CurveGetLength(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; VAR wideLength: wide): ComponentResult;
  1029.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1030.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  1031.     {$ENDC}
  1032. FUNCTION CurveLengthToPoint(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; length: Fixed; VAR location: FixedPoint; VAR tangent: FixedPoint): ComponentResult;
  1033.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1034.     INLINE $2F3C, $0014, $0101, $7000, $A82A;
  1035.     {$ENDC}
  1036. FUNCTION CurveNewPath(effect: ComponentInstance; VAR pPath: Handle): ComponentResult;
  1037.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1038.     INLINE $2F3C, $0004, $0102, $7000, $A82A;
  1039.     {$ENDC}
  1040. FUNCTION CurveCountPointsInPath(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; VAR pCount: UInt32): ComponentResult;
  1041.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1042.     INLINE $2F3C, $000C, $0103, $7000, $A82A;
  1043.     {$ENDC}
  1044. FUNCTION CurveGetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; VAR ptIsOnPath: BOOLEAN): ComponentResult;
  1045.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1046.     INLINE $2F3C, $0014, $0104, $7000, $A82A;
  1047.     {$ENDC}
  1048. FUNCTION CurveInsertPointIntoPath(effect: ComponentInstance; VAR aPoint: gxPoint; thePath: Handle; contourIndex: UInt32; pointIndex: UInt32; ptIsOnPath: BOOLEAN): ComponentResult;
  1049.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1050.     INLINE $2F3C, $0012, $0105, $7000, $A82A;
  1051.     {$ENDC}
  1052. FUNCTION CurveSetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; ptIsOnPath: BOOLEAN): ComponentResult;
  1053.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1054.     INLINE $2F3C, $0012, $0106, $7000, $A82A;
  1055.     {$ENDC}
  1056. FUNCTION CurveGetNearestPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; VAR thePoint: FixedPoint; VAR contourIndex: UInt32; VAR pointIndex: UInt32; VAR theDelta: Fixed): ComponentResult;
  1057.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1058.     INLINE $2F3C, $0014, $0107, $7000, $A82A;
  1059.     {$ENDC}
  1060. FUNCTION CurvePathPointToLength(ci: ComponentInstance; VAR aPath: gxPaths; startDist: Fixed; endDist: Fixed; VAR thePoint: FixedPoint; VAR pLength: Fixed): ComponentResult;
  1061.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1062.     INLINE $2F3C, $0014, $0108, $7000, $A82A;
  1063.     {$ENDC}
  1064. FUNCTION CurveCreateVectorStream(effect: ComponentInstance; VAR pStream: Handle): ComponentResult;
  1065.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1066.     INLINE $2F3C, $0004, $0109, $7000, $A82A;
  1067.     {$ENDC}
  1068. FUNCTION CurveAddAtomToVectorStream(effect: ComponentInstance; atomType: OSType; atomSize: Size; pAtomData: UNIV Ptr; vectorStream: Handle): ComponentResult;
  1069.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1070.     INLINE $2F3C, $0010, $010A, $7000, $A82A;
  1071.     {$ENDC}
  1072. FUNCTION CurveAddPathAtomToVectorStream(effect: ComponentInstance; pathData: Handle; vectorStream: Handle): ComponentResult;
  1073.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1074.     INLINE $2F3C, $0008, $010B, $7000, $A82A;
  1075.     {$ENDC}
  1076. FUNCTION CurveAddZeroAtomToVectorStream(effect: ComponentInstance; vectorStream: Handle): ComponentResult;
  1077.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1078.     INLINE $2F3C, $0004, $010C, $7000, $A82A;
  1079.     {$ENDC}
  1080. FUNCTION CurveGetAtomDataFromVectorStream(effect: ComponentInstance; vectorStream: Handle; atomType: LONGINT; VAR dataSize: LONGINT; VAR dataPtr: Ptr): ComponentResult;
  1081.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1082.     INLINE $2F3C, $0010, $010D, $7000, $A82A;
  1083.     {$ENDC}
  1084.  
  1085. { UPP call backs }
  1086. {$ALIGN RESET}
  1087. {$POP}
  1088.  
  1089. {$SETC UsingIncludes := ImageCodecIncludes}
  1090.  
  1091. {$ENDC} {__IMAGECODEC__}
  1092.  
  1093. {$IFC NOT UsingIncludes}
  1094.  END.
  1095. {$ENDC}
  1096.